// 对于数据请求的封装
// 1-函数封装
import axios from 'axios'
import { Toast } from 'vant'

// function httpForInfor (id) {
//   return axios({
//     url: `https://m.maizuo.com/gateway?filmId=${id}&k=3987413`,
//     headers: {
//       'X-Client-Info': '{"a":"3000","ch":"1002","v":"5.2.1","e":"16671244034514762247372801"}',
//       'X-Host': 'mall.film-ticket.film.info'
//     }
//   })
// }

// function httpForList () {
//   return axios({
//     url: 'https://m.maizuo.com/gateway?cityId=310100&pageNum=1&pageSize=10&type=1&k=7758802',
//     headers: {
//       'X-Client-Info': '{"a":"3000","ch":"1002","v":"5.2.1","e":"16671244034514762247372801"}',
//       'X-Host': 'mall.film-ticket.film.list'
//     }
//   })
// }

// export default {
//   httpForInfor,
//   httpForList
// }

// 2-数据请求的封装
// 解决跨域问题
const http = axios.create({
  // 每次发送请求都发送到https://m.maizuo.com
  baseURL: 'https://m.maizuo.com',
  // 10秒超时时间
  timeout: 10000,
  // 公共请求头
  headers: { 'X-Client-Info': '{"a":"3000","ch":"1002","v":"5.2.1","e":"16671244034514762247372801"}' }
})

// axios拦截器 !!!!!!
// 再发请求之前拦截 -- showLoading
http.interceptors.request.use(function (config) {
  // 在发送请求之前做一些事情
  // 比如说 加载显示
  Toast.loading({
    message: '加载中...',
    forbidClick: true,
    duration: 0 // 一直显示
  })
  return config
}, function (error) {
  // 对请求错误采取措施
  return Promise.reject(error)
})

// 在成功之后拦截 -- hideLoading
http.interceptors.response.use(function (response) {
  // 位于2xx范围内的任何状态代码都会触发此函数
  // 对响应数据做些什么,在then之前
  // 请求成功清除加载显示
  Toast.clear()
  return response
}, function (error) {
  // 超出2xx范围的任何状态代码都会触发此函数
  // 对响应错误采取措施
  // 请求失败也清除加载显示
  Toast.clear()
  return Promise.reject(error)
})

export default http
